{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from itertools import product\n",
    "import numpy as np\n",
    "import networkx as nx\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## algorithm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def floyd(graph):\n",
    "    # initialize matrix\n",
    "    distance = nx.adjacency_matrix(graph).todense().astype(float)\n",
    "    distance[distance == 0] = np.inf\n",
    "    np.fill_diagonal(distance, 0)\n",
    "    \n",
    "    # find shortest paths\n",
    "    for k, i, j in product(range(len(graph)), repeat=3):\n",
    "        distance[i, j] = min(distance[i, j], distance[i, k] + distance[k, j])\n",
    "        \n",
    "        # negative cycle detection\n",
    "        if i == j and distance[i, j] < 0:\n",
    "            return k, i, 'negative cycle detected'\n",
    "\n",
    "    # shortest paths\n",
    "    return {\n",
    "        (i, j): distance[i, j]\n",
    "        for i, j in product(range(len(graph)), repeat=2)\n",
    "        if i != j and not np.isinf(distance[i, j])\n",
    "    }"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def generate_graph(n, edge_prob=.5, pos_weight_prob=.2):\n",
    "    graph = nx.DiGraph()\n",
    "    graph.add_nodes_from(range(n))\n",
    "    \n",
    "    for u, v in product(range(n), repeat=2):\n",
    "        if u != v and np.random.rand() < edge_prob:\n",
    "            weight = [-1, 1][np.random.rand() < pos_weight_prob]\n",
    "            graph.add_edge(u, v, weight=weight)\n",
    "            \n",
    "    return graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def draw_graph(graph):\n",
    "    cm = {-1: 'red', 1: 'black'}\n",
    "    colors = [cm[e['weight']]  for (u, v, e) in graph.edges(data=True)]\n",
    "\n",
    "    plt.figure(figsize=(8, 8))\n",
    "    plt.axis('off')\n",
    "\n",
    "    layout = nx.spring_layout(graph)\n",
    "    nx.draw_networkx_nodes(graph, layout, node_color='steelblue', node_size=520)\n",
    "    nx.draw_networkx_edges(graph, layout, edge_color=colors)\n",
    "    nx.draw_networkx_labels(graph, layout, font_color='white')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## run"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10a2a2048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "graph = generate_graph(5, edge_prob=.4, pos_weight_prob=.7)\n",
    "draw_graph(graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{(0, 1): 0.0,\n",
       " (0, 2): -1.0,\n",
       " (0, 3): -2.0,\n",
       " (0, 4): -1.0,\n",
       " (1, 0): 1.0,\n",
       " (1, 2): 0.0,\n",
       " (1, 3): -1.0,\n",
       " (1, 4): 0.0,\n",
       " (2, 0): 2.0,\n",
       " (2, 1): 1.0,\n",
       " (2, 3): -1.0,\n",
       " (2, 4): 0.0,\n",
       " (3, 4): 1.0}"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "floyd(graph)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## run"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nsnJ0xoqNZrLn3beyz/dues/5hz3/pVefsWBlx3N3pGwQmz3Ox36f0iK1pDe/Kkn9yHCWKtUu7U/Q\ncYb1po/eln1f9F8/mbnFo/8Y2JyxM+uxciUQy4i4Azhm0eue8T3g+ZSTycZr0TqfcouUO7EljWE4\nSx0iYgvgemC3x+56AHse9UpiZCNmjIxM5jGjmfnQ7f997s0/ueGz+43z/v8BJ2bmp7pRs6TBYzhL\nNRGx0za7z7lpj799xWYjG89c/w+sxehDD3LLJ9/Cz24f01V1FfDCzFy6oXVKGlyGs1Qz78yFT8qV\no7fGjJGpJ3Nl9KEHWfLuU1l+/9LllFux3utlFZLWxz5nqcO8MxfOAC6NGSP1HdVTEiMbsfdxr/vd\nyMab7JOZ5xrMkiaiK/8BkgbIIcDOwLhfMh8x64kc+hfbscNjt+B/v30Pb/nMzet82IyRETbfevuV\nc0+/bHvAm6QkTYgzZ2ms0yi7ssf1i9+u4JIv38Wim34y4QdGxOaseY63JK2V4SxVqgNGDmYd7VLX\nfWcpX7njPn6zfMI3QVI97+Dq+ZK0XoaztNqelANGemE5sEePni1pwBjO0mq7sq5DRjZMALv16NmS\nBozhLK22CWvZCNYFI9XzJWm9DGdptQeB0R49e7R6viStl+EsrXY7sM4+5BkRbDQygxkzYvWfx4RW\nwhO4rRtFShp89jlLq90CbLquv+C5Bz6JEw7e+eHXh+y1HRctvpOLr/3u+p69KXDrBlcoaSh4fKfU\nYd6ZCz8PzKW7G8MSuObqMxYc2sVnShpgLmtLY50NLOvyM5cBb+7yMyUNMMNZGusLwJ10b2PYaPW8\na7r0PElDwGVtqWbemQufBHwL2KwLj/sdsNfVZyz4XheeJWlIOHOWaq4+Y8FdwAls+Glhy4ETDGZJ\nk+XMWVqLeWcuPBK4CJjJ5A4nGQVWUIL58l7UJmmwGc7SOlRL3JdSrpHcnHXv4k7K5q87gb9zxixp\nqgxnaT3mnblwBqW96lWUW6uWU0J6hDJLTkof82LKruxrrj5jwcpmqpU0CAxnaRKqax/3oFxisQnl\nSM7bgFuvPmPBiiZrkzQ4DGdJklrG3dqSJLWM4SxJUssYzpIktYzhLElSyxjOkiS1jOEsSVLLGM6S\nJLWM4SxJUssYzpIktYzhLElSyxjOkiS1jOEsSVLLGM6SJLWM4SxJUssYzpIktYzhLElSyxjOkiS1\njOEsSVLLGM6SJLWM4SxJUssYzpIktYzhLElSyxjOkiS1jOEsSVLLGM6SJLWM4SxJUssYzpIktYzh\nLElSyxjOkiS1jOEsSVLLGM6SJLWM4SxJUssYzpIktYzhLElSyxjOkiS1jOEsSVLLGM6SJLWM4SxJ\nUssYzpIktYzhLElSyxjOkiS1jOEsSVLLGM6SJLWM4SxJUssYzpIktYzhLElSyxjOkiS1jOEsSVLL\n/D9/3FiSpU/+XwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109669dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "graph = generate_graph(5, edge_prob=.4, pos_weight_prob=.6)\n",
    "draw_graph(graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 4, 'negative cycle detected')"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "floyd(graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
